package com.yinkgh.mybatis.view;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

import com.yinkgh.util.ModelPropertyDesc;

/**
 * 在审项目信息
 * @author yinlong
 *
 */
@ModelPropertyDesc(ModelDesc="在审项目信息")
public class BondTrialInfoView implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 4215108643727213937L;
	/**
	 * 
	 */
	/**在审项目主键id*/
    private Integer id;
	private Integer baseId;
	@ModelPropertyDesc(PropertyDesc="拟发行金额(亿)")
    private Integer issueAmount;
	/**证监会核准文号*/
	@ModelPropertyDesc(PropertyDesc="证监会核准文号")
    private String approvalNum;
    /**证监会核准时间*/
	@ModelPropertyDesc(PropertyDesc="证监会核准时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date approvalTime;
	/**审核状态*/
	@ModelPropertyDesc(PropertyDesc="审核状态")
    private String checkState;
	/**受理决定或者不予受理决定时间    */
	@ModelPropertyDesc(PropertyDesc="受理决定或者不予受理决定时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date acceptTime;
	/**第一次反馈意见出具时间          */
	@ModelPropertyDesc(PropertyDesc="第一次反馈意见出具时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date firstFeedbackTime;
    /**接收第一次反馈回复时间          */
	@ModelPropertyDesc(PropertyDesc="接收第一次反馈回复时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date firstReplayTime;
    /**第二次反馈意见函出具时间        */
	@ModelPropertyDesc(PropertyDesc="第二次反馈意见函出具时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date secondFeedbackTime;
    /**接收第二次反馈材料时间          */
	@ModelPropertyDesc(PropertyDesc="接收第二次反馈材料时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date secondReplayTime;
    /**通过专家会审核日期              */
	@ModelPropertyDesc(PropertyDesc="通过专家会审核日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date expertTime;
    /**出具预审核意见/出具无异议函时间 */
	@ModelPropertyDesc(PropertyDesc="出具预审核意见/出具无异议函时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd")//存日期时使用 
    private Date preAuditTime;
	private Integer userId;
    /**备注*/
	@ModelPropertyDesc(PropertyDesc="备注")
    private String remark;
	private int state;
	
	//=================债券基本信息表======================

	@ModelPropertyDesc(PropertyDesc = "债券名称")
	private String bondName;
	/** 债券代码 */
	@ModelPropertyDesc(PropertyDesc = "债券代码")
	private String bondCode;
	@ModelPropertyDesc(PropertyDesc = "发行方式")
	private String issueWay;
	/** 发行人名称 */
	@ModelPropertyDesc(PropertyDesc = "发行人名称")
	private String issuerName;
	@ModelPropertyDesc(PropertyDesc="发行人所属证监局")
	private String issuerSRB;
	@ModelPropertyDesc(PropertyDesc="主承销商所属证监局")
	private String underwriterSRB;
	@ModelPropertyDesc(PropertyDesc="资信评级机构所属证监局")
	private String ratingAgencySRB;
	
	
	@ModelPropertyDesc(PropertyDesc = "期限（年）")
	private Integer trem;
	/** 拟发行金额（亿） */
	@ModelPropertyDesc(PropertyDesc = "股票代码(如有)")
	private String stockCode;
	/** 主营业务 */
	@ModelPropertyDesc(PropertyDesc = "主营业务")
	private String issuerBusiness;
	/** 所属行业 */
	@ModelPropertyDesc(PropertyDesc = "所属行业")
	private String issuerIndustry;
	/** 企业性质 */
	@ModelPropertyDesc(PropertyDesc = "企业性质")
	private String issuerNature;
	/** 是否为非金融企业 */
	@ModelPropertyDesc(PropertyDesc = "是否为非金融企业")
	private String issuerFinancial;
	/** 发行人联系方式 */
	@ModelPropertyDesc(PropertyDesc = "发行人联系方式")
	private String issuerContactWay;
	// TODO 主承销商名称
	@ModelPropertyDesc(PropertyDesc = "主承销商名称")
	private String underwriterName;
	// TODO 主承销商项目负责人 债券信息表--？？？？
	@ModelPropertyDesc(PropertyDesc = "主承销商项目负责人")
	private String underwriterCharge;
	// TODO 受托管理人名称
	@ModelPropertyDesc(PropertyDesc = "受托管理人名称")
	private String trusteeName;
	@ModelPropertyDesc(PropertyDesc="受托管理人所属证监局")
	private String trusteeSRB;
	// TODO 主体评级
	@ModelPropertyDesc(PropertyDesc = "主体评级")
	private String issuerRating;
	@ModelPropertyDesc(PropertyDesc = "债项评级")
	private String rating;
	@ModelPropertyDesc(PropertyDesc = "增信措施")
	private String creditMeasures;
	/** 会计师事务所名称 */
	@ModelPropertyDesc(PropertyDesc = "会计师事务所名称")
	private String accountingName;
	/** 会计师事务所签字会计师 */
	@ModelPropertyDesc(PropertyDesc = "会计师事务所签字会计师")
	private String accountingSignatory;
	/** 律师事务所名称 */
	@ModelPropertyDesc(PropertyDesc = "律师事务所名称")
	private String lawName;
	/** 律师事务所签字律师 */
	@ModelPropertyDesc(PropertyDesc = "律师事务所签字律师")
	private String lawSignatory;
	/** 资信评级机构 */
	@ModelPropertyDesc(PropertyDesc = "资信评级机构")
	private String ratingAgencyName;
	/** 资信评级机构项目负责人 */
	@ModelPropertyDesc(PropertyDesc = "资信评级机构项目负责人")
	private String ratingAgencyCharge;
	// TODO 证监会核准规模（亿元）
	@ModelPropertyDesc(PropertyDesc = "证监会核准规模（亿元）")
	private Long beIssueAmount;
	/** 注册地(省份) */
	@ModelPropertyDesc(PropertyDesc = "注册地(省份)")
	private String issuerProvince;
	/** 注册地（市） */
	@ModelPropertyDesc(PropertyDesc = "注册地(市)")
	private String issuerCity;
	public String getBondName() {
		return bondName;
	}
	public void setBondName(String bondName) {
		this.bondName = bondName;
	}
	public String getBondCode() {
		return bondCode;
	}
	public void setBondCode(String bondCode) {
		this.bondCode = bondCode;
	}
	public String getIssueWay() {
		return issueWay;
	}
	public void setIssueWay(String issueWay) {
		this.issueWay = issueWay;
	}
	public String getIssuerName() {
		return issuerName;
	}
	public void setIssuerName(String issuerName) {
		this.issuerName = issuerName;
	}
	public Integer getTrem() {
		return trem;
	}
	public void setTrem(Integer trem) {
		this.trem = trem;
	}
	public String getStockCode() {
		return stockCode;
	}
	public void setStockCode(String stockCode) {
		this.stockCode = stockCode;
	}
	public String getIssuerBusiness() {
		return issuerBusiness;
	}
	public void setIssuerBusiness(String issuerBusiness) {
		this.issuerBusiness = issuerBusiness;
	}
	public String getIssuerIndustry() {
		return issuerIndustry;
	}
	public void setIssuerIndustry(String issuerIndustry) {
		this.issuerIndustry = issuerIndustry;
	}
	public String getIssuerNature() {
		return issuerNature;
	}
	public void setIssuerNature(String issuerNature) {
		this.issuerNature = issuerNature;
	}
	public String getIssuerFinancial() {
		return issuerFinancial;
	}
	public void setIssuerFinancial(String issuerFinancial) {
		this.issuerFinancial = issuerFinancial;
	}
	public String getIssuerContactWay() {
		return issuerContactWay;
	}
	public void setIssuerContactWay(String issuerContactWay) {
		this.issuerContactWay = issuerContactWay;
	}
	public String getUnderwriterName() {
		return underwriterName;
	}
	public void setUnderwriterName(String underwriterName) {
		this.underwriterName = underwriterName;
	}
	public String getUnderwriterCharge() {
		return underwriterCharge;
	}
	public void setUnderwriterCharge(String underwriterCharge) {
		this.underwriterCharge = underwriterCharge;
	}
	public String getTrusteeName() {
		return trusteeName;
	}
	public void setTrusteeName(String trusteeName) {
		this.trusteeName = trusteeName;
	}
	public String getIssuerRating() {
		return issuerRating;
	}
	public void setIssuerRating(String issuerRating) {
		this.issuerRating = issuerRating;
	}
	public String getRating() {
		return rating;
	}
	public void setRating(String rating) {
		this.rating = rating;
	}
	public String getCreditMeasures() {
		return creditMeasures;
	}
	public void setCreditMeasures(String creditMeasures) {
		this.creditMeasures = creditMeasures;
	}
	public String getAccountingName() {
		return accountingName;
	}
	public void setAccountingName(String accountingName) {
		this.accountingName = accountingName;
	}
	public String getAccountingSignatory() {
		return accountingSignatory;
	}
	public void setAccountingSignatory(String accountingSignatory) {
		this.accountingSignatory = accountingSignatory;
	}
	public String getLawName() {
		return lawName;
	}
	public void setLawName(String lawName) {
		this.lawName = lawName;
	}
	public String getLawSignatory() {
		return lawSignatory;
	}
	public void setLawSignatory(String lawSignatory) {
		this.lawSignatory = lawSignatory;
	}
	public String getRatingAgencyName() {
		return ratingAgencyName;
	}
	public void setRatingAgencyName(String ratingAgencyName) {
		this.ratingAgencyName = ratingAgencyName;
	}
	public String getRatingAgencyCharge() {
		return ratingAgencyCharge;
	}
	public void setRatingAgencyCharge(String ratingAgencyCharge) {
		this.ratingAgencyCharge = ratingAgencyCharge;
	}
	public Long getBeIssueAmount() {
		return beIssueAmount;
	}
	public void setBeIssueAmount(Long beIssueAmount) {
		this.beIssueAmount = beIssueAmount;
	}
	public String getIssuerProvince() {
		return issuerProvince;
	}
	public void setIssuerProvince(String issuerProvince) {
		this.issuerProvince = issuerProvince;
	}
	public String getIssuerCity() {
		return issuerCity;
	}
	public void setIssuerCity(String issuerCity) {
		this.issuerCity = issuerCity;
	}
	

	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getBaseId() {
		return baseId;
	}
	public void setBaseId(Integer baseId) {
		this.baseId = baseId;
	}
	public Integer getIssueAmount() {
		return issueAmount;
	}
	public void setIssueAmount(Integer issueAmount) {
		this.issueAmount = issueAmount;
	}
	public String getApprovalNum() {
		return approvalNum;
	}
	public void setApprovalNum(String approvalNum) {
		this.approvalNum = approvalNum;
	}
	public Date getApprovalTime() {
		return approvalTime;
	}
	public void setApprovalTime(Date approvalTime) {
		this.approvalTime = approvalTime;
	}
	public String getCheckState() {
		return checkState;
	}
	public void setCheckState(String checkState) {
		this.checkState = checkState;
	}
	public Date getAcceptTime() {
		return acceptTime;
	}
	public void setAcceptTime(Date acceptTime) {
		this.acceptTime = acceptTime;
	}
	public Date getFirstFeedbackTime() {
		return firstFeedbackTime;
	}
	public void setFirstFeedbackTime(Date firstFeedbackTime) {
		this.firstFeedbackTime = firstFeedbackTime;
	}
	public Date getFirstReplayTime() {
		return firstReplayTime;
	}
	public void setFirstReplayTime(Date firstReplayTime) {
		this.firstReplayTime = firstReplayTime;
	}
	public Date getSecondFeedbackTime() {
		return secondFeedbackTime;
	}
	public void setSecondFeedbackTime(Date secondFeedbackTime) {
		this.secondFeedbackTime = secondFeedbackTime;
	}
	public Date getSecondReplayTime() {
		return secondReplayTime;
	}
	public void setSecondReplayTime(Date secondReplayTime) {
		this.secondReplayTime = secondReplayTime;
	}
	public Date getExpertTime() {
		return expertTime;
	}
	public void setExpertTime(Date expertTime) {
		this.expertTime = expertTime;
	}
	public Date getPreAuditTime() {
		return preAuditTime;
	}
	public void setPreAuditTime(Date preAuditTime) {
		this.preAuditTime = preAuditTime;
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
	public String getIssuerSRB() {
		return issuerSRB;
	}
	public void setIssuerSRB(String issuerSRB) {
		this.issuerSRB = issuerSRB;
	}
	
	public String getTrusteeSRB() {
		return trusteeSRB;
	}
	public void setTrusteeSRB(String trusteeSRB) {
		this.trusteeSRB = trusteeSRB;
	}
	
	public String getUnderwriterSRB() {
		return underwriterSRB;
	}
	public void setUnderwriterSRB(String underwriterSRB) {
		this.underwriterSRB = underwriterSRB;
	}
	
	public String getRatingAgencySRB() {
		return ratingAgencySRB;
	}
	public void setRatingAgencySRB(String ratingAgencySRB) {
		this.ratingAgencySRB = ratingAgencySRB;
	}
	
	public int getState() {
		return state;
	}
	public void setState(int state) {
		this.state = state;
	}
	public Object deepCopy() throws Exception {
		// 将该对象序列化成流,因为写在流里的是对象的一个拷贝，而原对象仍然存在于JVM里面。所以利用这个特性可以实现对象的深拷贝
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(bos);
		oos.writeObject(this);
		// 将流序列化成对象
		ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
		ObjectInputStream ois = new ObjectInputStream(bis);
		return ois.readObject();
	}
	
	
	
	
}
